In many virtualized data center implementations, it is desirable to allocate resources, including hardware resources in a computing environment responsive to requests. In conventional approaches, when an allocation request is generated, current software typically chooses the resources from the pool of available ones in a random fashion; not taking into account any specific allocation requirements based on user's request or preferred system usage. These allocation requirements from user's request are things such as “give me device #1234”, “give me a Cisco firewall, (instead of any other vendor)”, “give me a Solaris box with at least 4 Gb memory”.
While conventional approaches directed to automating resource allocation seek to dynamically provision computing resources in response to requests, such conventional approaches fail to consider the impact of the provisioning decision on operational considerations, such as reducing device heat dissipation, avoiding single points of failure in a switched network and so forth.
Accordingly, without a resource allocation mechanism that considers such needs, conventional approaches can provide resource allocations that result in sub-optimal or even non-workable configurations in which incompatible resources may be selected, resources may be placed physically too close, more dissipated heat is generated than necessary or too many components are shared, thereby creating a single point of failure.